# 面向对象设计：类和对象
# 分析：
# 类名：猫类 --> Cat
# 属性：姓名 --> name
# 方法：吃 喝  --> eat()  drink()

class Cat(object):
    """猫类"""
    # 对象设置属性---> 通过固定的方法 __init__()
    def __init__(self,name):
        """初始化方法：给对象设置属性"""
        self.name = name
        # self.name = "咪咪"  # lazy这个猫的名字是"咪咪"
    def eat(self):
            """吃方法"""
            print(f"{self.name}爱吃鱼")
    def drink(self):
            """喝方法"""
            print(f"{self.name}要吃鱼")
# 创建对象 : init在创建对象时自动被调用，如果有形参，需要在创建对象时传递实参
tom = Cat("汤姆")
lazy = Cat("咪咪")

# 调用方法
tom.eat()
tom.drink()
lazy.eat()
lazy.drink()

# 总结：
# 1.给类对象设置属性使用初始化方法：__init__(self)
# 2.初始化方法内部设置属性：self.属性名 = 属性值
# 3.初始化方法在创建对象时被自动调用
# 4.在类中其他方法使用属性是直接通过：self.属性名 获取属性值
# 5.在python中双下划线开头双下划线结尾的方法叫内置方法


# 通过控制台打印查看某个对象具有哪些属性和方法
# print(dir(对象))
print(dir(tom))

